Skip to content

Commit

Permalink
Domains are now longer AnyVal
Browse files Browse the repository at this point in the history
Because when used as a unary primary key scala complains that you cannot nest `extends AnyVal`.
This could have been solved in many other ways, but this felt easy
  • Loading branch information
oyvindberg committed Mar 20, 2024
1 parent 3752143 commit e3f40b5
Show file tree
Hide file tree
Showing 31 changed files with 35 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.AccountNumber`
* No constraint
*/
case class AccountNumber(value: String) extends AnyVal
case class AccountNumber(value: String)
object AccountNumber {
implicit lazy val arrayColumn: Column[Array[AccountNumber]] = Column.columnToArray(column, implicitly)
implicit lazy val arrayToStatement: ToStatement[Array[AccountNumber]] = ToStatement.arrayToParameter(ParameterMetaData.StringParameterMetaData).contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.Flag`
* No constraint
*/
case class Flag(value: Boolean) extends AnyVal
case class Flag(value: Boolean)
object Flag {
implicit lazy val arrayColumn: Column[Array[Flag]] = Column.columnToArray(column, implicitly)
implicit lazy val arrayToStatement: ToStatement[Array[Flag]] = adventureworks.BooleanArrayToStatement.contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.mydomain`
* No constraint
*/
case class Mydomain(value: String) extends AnyVal
case class Mydomain(value: String)
object Mydomain {
implicit lazy val arrayColumn: Column[Array[Mydomain]] = Column.columnToArray(column, implicitly)
implicit lazy val arrayToStatement: ToStatement[Array[Mydomain]] = ToStatement.arrayToParameter(ParameterMetaData.StringParameterMetaData).contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.Name`
* No constraint
*/
case class Name(value: String) extends AnyVal
case class Name(value: String)
object Name {
implicit lazy val arrayColumn: Column[Array[Name]] = Column.columnToArray(column, implicitly)
implicit lazy val arrayToStatement: ToStatement[Array[Name]] = ToStatement.arrayToParameter(ParameterMetaData.StringParameterMetaData).contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.NameStyle`
* No constraint
*/
case class NameStyle(value: Boolean) extends AnyVal
case class NameStyle(value: Boolean)
object NameStyle {
implicit lazy val arrayColumn: Column[Array[NameStyle]] = Column.columnToArray(column, implicitly)
implicit lazy val arrayToStatement: ToStatement[Array[NameStyle]] = adventureworks.BooleanArrayToStatement.contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.OrderNumber`
* No constraint
*/
case class OrderNumber(value: String) extends AnyVal
case class OrderNumber(value: String)
object OrderNumber {
implicit lazy val arrayColumn: Column[Array[OrderNumber]] = Column.columnToArray(column, implicitly)
implicit lazy val arrayToStatement: ToStatement[Array[OrderNumber]] = ToStatement.arrayToParameter(ParameterMetaData.StringParameterMetaData).contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.Phone`
* No constraint
*/
case class Phone(value: String) extends AnyVal
case class Phone(value: String)
object Phone {
implicit lazy val arrayColumn: Column[Array[Phone]] = Column.columnToArray(column, implicitly)
implicit lazy val arrayToStatement: ToStatement[Array[Phone]] = ToStatement.arrayToParameter(ParameterMetaData.StringParameterMetaData).contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.AccountNumber`
* No constraint
*/
case class AccountNumber(value: String) extends AnyVal
case class AccountNumber(value: String)
object AccountNumber {
implicit lazy val arrayGet: Get[Array[AccountNumber]] = adventureworks.StringArrayMeta.get.map(_.map(AccountNumber.apply))
implicit lazy val arrayPut: Put[Array[AccountNumber]] = adventureworks.StringArrayMeta.put.contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.Flag`
* No constraint
*/
case class Flag(value: Boolean) extends AnyVal
case class Flag(value: Boolean)
object Flag {
implicit lazy val arrayGet: Get[Array[Flag]] = adventureworks.BooleanArrayMeta.get.map(_.map(Flag.apply))
implicit lazy val arrayPut: Put[Array[Flag]] = adventureworks.BooleanArrayMeta.put.contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.mydomain`
* No constraint
*/
case class Mydomain(value: String) extends AnyVal
case class Mydomain(value: String)
object Mydomain {
implicit lazy val arrayGet: Get[Array[Mydomain]] = adventureworks.StringArrayMeta.get.map(_.map(Mydomain.apply))
implicit lazy val arrayPut: Put[Array[Mydomain]] = adventureworks.StringArrayMeta.put.contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.Name`
* No constraint
*/
case class Name(value: String) extends AnyVal
case class Name(value: String)
object Name {
implicit lazy val arrayGet: Get[Array[Name]] = adventureworks.StringArrayMeta.get.map(_.map(Name.apply))
implicit lazy val arrayPut: Put[Array[Name]] = adventureworks.StringArrayMeta.put.contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.NameStyle`
* No constraint
*/
case class NameStyle(value: Boolean) extends AnyVal
case class NameStyle(value: Boolean)
object NameStyle {
implicit lazy val arrayGet: Get[Array[NameStyle]] = adventureworks.BooleanArrayMeta.get.map(_.map(NameStyle.apply))
implicit lazy val arrayPut: Put[Array[NameStyle]] = adventureworks.BooleanArrayMeta.put.contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.OrderNumber`
* No constraint
*/
case class OrderNumber(value: String) extends AnyVal
case class OrderNumber(value: String)
object OrderNumber {
implicit lazy val arrayGet: Get[Array[OrderNumber]] = adventureworks.StringArrayMeta.get.map(_.map(OrderNumber.apply))
implicit lazy val arrayPut: Put[Array[OrderNumber]] = adventureworks.StringArrayMeta.put.contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ import typo.dsl.Bijection
/** Domain `public.Phone`
* No constraint
*/
case class Phone(value: String) extends AnyVal
case class Phone(value: String)
object Phone {
implicit lazy val arrayGet: Get[Array[Phone]] = adventureworks.StringArrayMeta.get.map(_.map(Phone.apply))
implicit lazy val arrayPut: Put[Array[Phone]] = adventureworks.StringArrayMeta.put.contramap(_.map(_.value))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import zio.json.JsonEncoder
/** Domain `public.AccountNumber`
* No constraint
*/
case class AccountNumber(value: String) extends AnyVal
case class AccountNumber(value: String)
object AccountNumber {
implicit lazy val arraySetter: Setter[Array[AccountNumber]] = adventureworks.StringArraySetter.contramap(_.map(_.value))
implicit lazy val bijection: Bijection[AccountNumber, String] = Bijection[AccountNumber, String](_.value)(AccountNumber.apply)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import zio.json.JsonEncoder
/** Domain `public.Flag`
* No constraint
*/
case class Flag(value: Boolean) extends AnyVal
case class Flag(value: Boolean)
object Flag {
implicit lazy val arraySetter: Setter[Array[Flag]] = adventureworks.BooleanArraySetter.contramap(_.map(_.value))
implicit lazy val bijection: Bijection[Flag, Boolean] = Bijection[Flag, Boolean](_.value)(Flag.apply)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import zio.json.JsonEncoder
/** Domain `public.mydomain`
* No constraint
*/
case class Mydomain(value: String) extends AnyVal
case class Mydomain(value: String)
object Mydomain {
implicit lazy val arraySetter: Setter[Array[Mydomain]] = adventureworks.StringArraySetter.contramap(_.map(_.value))
implicit lazy val bijection: Bijection[Mydomain, String] = Bijection[Mydomain, String](_.value)(Mydomain.apply)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import zio.json.JsonEncoder
/** Domain `public.Name`
* No constraint
*/
case class Name(value: String) extends AnyVal
case class Name(value: String)
object Name {
implicit lazy val arraySetter: Setter[Array[Name]] = adventureworks.StringArraySetter.contramap(_.map(_.value))
implicit lazy val bijection: Bijection[Name, String] = Bijection[Name, String](_.value)(Name.apply)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import zio.json.JsonEncoder
/** Domain `public.NameStyle`
* No constraint
*/
case class NameStyle(value: Boolean) extends AnyVal
case class NameStyle(value: Boolean)
object NameStyle {
implicit lazy val arraySetter: Setter[Array[NameStyle]] = adventureworks.BooleanArraySetter.contramap(_.map(_.value))
implicit lazy val bijection: Bijection[NameStyle, Boolean] = Bijection[NameStyle, Boolean](_.value)(NameStyle.apply)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import zio.json.JsonEncoder
/** Domain `public.OrderNumber`
* No constraint
*/
case class OrderNumber(value: String) extends AnyVal
case class OrderNumber(value: String)
object OrderNumber {
implicit lazy val arraySetter: Setter[Array[OrderNumber]] = adventureworks.StringArraySetter.contramap(_.map(_.value))
implicit lazy val bijection: Bijection[OrderNumber, String] = Bijection[OrderNumber, String](_.value)(OrderNumber.apply)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import zio.json.JsonEncoder
/** Domain `public.Phone`
* No constraint
*/
case class Phone(value: String) extends AnyVal
case class Phone(value: String)
object Phone {
implicit lazy val arraySetter: Setter[Array[Phone]] = adventureworks.StringArraySetter.contramap(_.map(_.value))
implicit lazy val bijection: Bijection[Phone, String] = Bijection[Phone, String](_.value)(Phone.apply)
Expand Down
2 changes: 1 addition & 1 deletion typo/src/scala/typo/internal/codegen/DbLib.scala
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ trait DbLib {
def mockRepoImpl(id: IdComputed, repoMethod: RepoMethod, maybeToRow: Option[sc.Param]): sc.Code
def testInsertMethod(x: ComputedTestInserts.InsertMethod): sc.Value
def stringEnumInstances(wrapperType: sc.Type, underlying: sc.Type): List[sc.ClassMember]
def anyValInstances(wrapperType: sc.Type.Qualified, underlying: sc.Type): List[sc.ClassMember]
def wrapperTypeInstances(wrapperType: sc.Type.Qualified, underlying: sc.Type): List[sc.ClassMember]
def missingInstances: List[sc.ClassMember]
def rowInstances(tpe: sc.Type, cols: NonEmptyList[ComputedColumn], rowType: DbLib.RowType): List[sc.ClassMember]
def customTypeInstances(ct: CustomType): List[sc.ClassMember]
Expand Down
2 changes: 1 addition & 1 deletion typo/src/scala/typo/internal/codegen/DbLibAnorm.scala
Original file line number Diff line number Diff line change
Expand Up @@ -602,7 +602,7 @@ class DbLibAnorm(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDefa
textSupport.map(_.anyValInstance(wrapperType, underlying))
).flatten

override def anyValInstances(wrapperType: sc.Type.Qualified, underlying: sc.Type): List[sc.Given] =
override def wrapperTypeInstances(wrapperType: sc.Type.Qualified, underlying: sc.Type): List[sc.Given] =
List(
Some(
sc.Given(
Expand Down
2 changes: 1 addition & 1 deletion typo/src/scala/typo/internal/codegen/DbLibDoobie.scala
Original file line number Diff line number Diff line change
Expand Up @@ -495,7 +495,7 @@ class DbLibDoobie(pkg: sc.QIdent, inlineImplicits: Boolean, default: ComputedDef
textSupport.map(_.anyValInstance(wrapperType, underlying))
).flatten

override def anyValInstances(wrapperType: sc.Type.Qualified, underlying: sc.Type): List[sc.Given] =
override def wrapperTypeInstances(wrapperType: sc.Type.Qualified, underlying: sc.Type): List[sc.Given] =
List(
Some(
sc.Given(
Expand Down
2 changes: 1 addition & 1 deletion typo/src/scala/typo/internal/codegen/DbLibZioJdbc.scala
Original file line number Diff line number Diff line change
Expand Up @@ -627,7 +627,7 @@ class DbLibZioJdbc(pkg: sc.QIdent, inlineImplicits: Boolean, dslEnabled: Boolean
).flatten
}

override def anyValInstances(wrapperType: sc.Type.Qualified, underlying: sc.Type): List[sc.ClassMember] =
override def wrapperTypeInstances(wrapperType: sc.Type.Qualified, underlying: sc.Type): List[sc.ClassMember] =
List(
Option(
sc.Given(
Expand Down
6 changes: 3 additions & 3 deletions typo/src/scala/typo/internal/codegen/FileDomain.scala
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ object FileDomain {
genOrdering.ordering(domain.tpe, NonEmptyList(sc.Param(value, domain.underlyingType, None)))
),
bijection.toList,
options.jsonLibs.flatMap(_.anyValInstances(wrapperType = domain.tpe, fieldName = value, underlying = domain.underlyingType)),
options.dbLib.toList.flatMap(_.anyValInstances(wrapperType = domain.tpe, underlying = domain.underlyingType))
options.jsonLibs.flatMap(_.wrapperTypeInstances(wrapperType = domain.tpe, fieldName = value, underlying = domain.underlyingType)),
options.dbLib.toList.flatMap(_.wrapperTypeInstances(wrapperType = domain.tpe, underlying = domain.underlyingType))
).flatten

val str =
code"""|$comments
|case class ${domain.tpe.name}($value: ${domain.underlyingType}) extends AnyVal
|case class ${domain.tpe.name}($value: ${domain.underlyingType})
|${genObject(domain.tpe.value, instances)}""".stripMargin

sc.File(domain.tpe, str, secondaryTypes = Nil)
Expand Down
4 changes: 2 additions & 2 deletions typo/src/scala/typo/internal/codegen/FilesTable.scala
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,8 @@ case class FilesTable(table: ComputedTable, options: InternalOptions, genOrderin
genOrdering.ordering(id.tpe, NonEmptyList(sc.Param(value, id.underlying, None)))
),
bijection.toList,
options.jsonLibs.flatMap(_.anyValInstances(wrapperType = id.tpe, fieldName = value, underlying = id.underlying)),
options.dbLib.toList.flatMap(_.anyValInstances(wrapperType = id.tpe, underlying = id.underlying))
options.jsonLibs.flatMap(_.wrapperTypeInstances(wrapperType = id.tpe, fieldName = value, underlying = id.underlying)),
options.dbLib.toList.flatMap(_.wrapperTypeInstances(wrapperType = id.tpe, underlying = id.underlying))
).flatten
Some(
sc.File(
Expand Down
4 changes: 2 additions & 2 deletions typo/src/scala/typo/internal/codegen/JsonLib.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,14 +5,14 @@ package codegen
trait JsonLib {
def defaultedInstance(default: ComputedDefault): List[sc.Given]
def stringEnumInstances(wrapperType: sc.Type, underlying: sc.Type): List[sc.Given]
def anyValInstances(wrapperType: sc.Type.Qualified, fieldName: sc.Ident, underlying: sc.Type): List[sc.Given]
def wrapperTypeInstances(wrapperType: sc.Type.Qualified, fieldName: sc.Ident, underlying: sc.Type): List[sc.Given]
def productInstances(tpe: sc.Type, fields: NonEmptyList[JsonLib.Field]): List[sc.Given]
def missingInstances: List[sc.ClassMember]

final def customTypeInstances(ct: CustomType): List[sc.Given] =
ct.params match {
case NonEmptyList(param, Nil) =>
anyValInstances(ct.typoType, param.name, param.tpe)
wrapperTypeInstances(ct.typoType, param.name, param.tpe)
case more =>
productInstances(ct.typoType, more.map(param => JsonLib.Field(param.name, sc.StrLit(param.name.value), param.tpe)))
}
Expand Down
2 changes: 1 addition & 1 deletion typo/src/scala/typo/internal/codegen/JsonLibCirce.scala
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ case class JsonLibCirce(pkg: sc.QIdent, default: ComputedDefault, inlineImplicit
if (inlineImplicits) go(sc.Type.base(tpe)) else Encoder.of(tpe).code
}

def anyValInstances(wrapperType: sc.Type.Qualified, fieldName: sc.Ident, underlying: sc.Type): List[sc.Given] =
def wrapperTypeInstances(wrapperType: sc.Type.Qualified, fieldName: sc.Ident, underlying: sc.Type): List[sc.Given] =
List(
sc.Given(
tparams = Nil,
Expand Down
2 changes: 1 addition & 1 deletion typo/src/scala/typo/internal/codegen/JsonLibPlay.scala
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ case class JsonLibPlay(pkg: sc.QIdent, default: ComputedDefault, inlineImplicits
)
)

def anyValInstances(wrapperType: sc.Type.Qualified, fieldName: sc.Ident, underlying: sc.Type): List[sc.Given] =
def wrapperTypeInstances(wrapperType: sc.Type.Qualified, fieldName: sc.Ident, underlying: sc.Type): List[sc.Given] =
List(
sc.Given(
tparams = Nil,
Expand Down
2 changes: 1 addition & 1 deletion typo/src/scala/typo/internal/codegen/JsonLibZioJson.scala
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ final case class JsonLibZioJson(pkg: sc.QIdent, default: ComputedDefault, inline
)
)

override def anyValInstances(wrapperType: sc.Type.Qualified, fieldName: sc.Ident, underlying: sc.Type): List[sc.Given] =
override def wrapperTypeInstances(wrapperType: sc.Type.Qualified, fieldName: sc.Ident, underlying: sc.Type): List[sc.Given] =
List(
sc.Given(
tparams = Nil,
Expand Down

0 comments on commit e3f40b5

Please sign in to comment.