Skip to content

Commit

Permalink
Add MonocleLensesModelsCodeGenerator, and move CirceJsonCodecModelsCo…
Browse files Browse the repository at this point in the history
…deGenerator to `extra` subpackage
  • Loading branch information
nafg committed Apr 3, 2022
1 parent 444dd16 commit 798d624
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 19 deletions.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package slick.additions.codegen.extra.circe

import scala.meta.{Init, Mod, Name, Type}

import slick.additions.codegen.{
ModelsCodeGenerator,
TableConfig,
scalametaDefnClassExtensionMethods
}

/** Annotates model classes with Circe's `@JsonCodec`.
*
* Generated code requires `circe-generic`
*/
trait CirceJsonCodecModelsCodeGenerator extends ModelsCodeGenerator {
override protected def modelClass(tableConfig: TableConfig) =
super
.modelClass(tableConfig)
.withMod(Mod.Annot(Init(Type.Name("JsonCodec"), Name.Anonymous(), Nil)))

override protected def imports(strings: List[String]) =
super.imports(strings :+ "io.circe.generic.JsonCodec")
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package slick.additions.codegen.extra.monocle

import scala.meta._

import slick.additions.codegen.{
ModelsCodeGenerator,
TableConfig,
scalametaDefnClassExtensionMethods
}

/** Annotates model classes with Monocle's `@Lenses`.
*
* Generated code requires `monocle-macro`
*/
trait MonocleLensesModelsCodeGenerator extends ModelsCodeGenerator {
override protected def modelClass(tableConfig: TableConfig) =
super
.modelClass(tableConfig)
.withMod(Mod.Annot(Init(Type.Name("Lenses"), Name.Anonymous(), Nil)))

override protected def rowStats(tableConfig: TableConfig) =
List(
modelClass(tableConfig),
q"object ${Term.Name(tableConfig.modelClassName)}"
)

override protected def imports(strings: List[String]) =
super.imports(strings :+ "monocle.macros.Lenses")
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package slick.additions

import scala.meta.{Defn, Mod}
import scala.util.Try


Expand All @@ -21,4 +22,8 @@ package object codegen {
val AsBoolean = new TryExtractor(_.toBoolean)
val AsInt = new TryExtractor(_.toInt)
val AsDouble = new TryExtractor(_.toDouble)

implicit class scalametaDefnClassExtensionMethods(private val self: Defn.Class) extends AnyVal {
def withMod(mod: Mod) = self.copy(mods = mod +: self.mods)
}
}

0 comments on commit 798d624

Please sign in to comment.