Enumify is a SBT plugin that will keep enums from your favorite database in sync with Scala types
Add SBT plugin to project/plugins.sbt
addSbtPlugin("com.github.droptheplot" % "enumify" % "0.1")Add source generator to build.sbt
sourceGenerators in Compile += Def.task {
val connection: java.sql.Connection = ???
enumify.Enumify(connection, enumify.sources.PostgreSQL, enumify.renderers.Plain) {
(sourceManaged in Compile).value / "enumify"
}
}.taskValuesealed abstract class Mood(value: String)
object Mood {
case object Sad extends Mood("sad")
case object Ok extends Mood("ok")
case object Happy extends Mood("happy")
}sealed abstract class Mood extends EnumEntry(override val entryName: String) extends EnumEntry
object Mood extends Enum[Mood] {
case object Sad extends Mood("sad")
case object Ok extends Mood("ok")
case object Happy extends Mood("happy")
val values = findValues
}Use sbt "testOnly -- -l IntegrationTest" to run only unit tests