A derivation library for scala 3 with annotation based configuration.
This library os being published to the macen central. Add library to your project as
addSbtPlugin("com.evolution" % "sbt-artifactory-plugin" % "0.0.2")
libraryDependencies += "com.evolution" %% "derivation-circe" % "{version}"
Finally, define your own type, which derives circe instances
import evo.derivation.*
import evo.derivation.circe.*
import evo.derivation.config.Config
import java.util.UUID
@SnakeCase
@Discriminator("type")
enum User derives Config, EvoCodec:
case AuthorizedClient(@Rename("client_id") id: UUID, name: String)
case Anonymous
Transforms all the constructor and\or field names to the snake case
Defines discriminator field for serialization of sealed trait
or enum
Renames single case class
field or enum
constructor
Write\Reads all inner fields of some field on the upper level during serialization